From: Razvan Cojocaru Date: Fri, 29 Jan 2016 16:50:05 +0000 (+0100) Subject: x86/vm_event: reset monitor in vm_event_cleanup_domain() X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~1853 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=b848dc83cc3f500a9d9f7ebcf16eece7f31566ba;p=xen.git x86/vm_event: reset monitor in vm_event_cleanup_domain() It is currently possible to leave a monitor flag enabled even after vm_event_cleanup_domain() has been called, potentially leading to a crash in hvm_msr_write_intercept() and hvm_set_crX() (when v->arch.vm_event has become NULL, but the corresponding corresponding v->domain->arch.monitor flag is non-zero). This patch zeroes out arch.monitor in vm_event_cleanup_domain(). Signed-off-by: Razvan Cojocaru Reviewed-by: Andrew Cooper Acked-by: Tamas K Lengyel --- diff --git a/xen/arch/x86/vm_event.c b/xen/arch/x86/vm_event.c index 9677eccb40..08d678a9cf 100644 --- a/xen/arch/x86/vm_event.c +++ b/xen/arch/x86/vm_event.c @@ -56,6 +56,7 @@ void vm_event_cleanup_domain(struct domain *d) } d->arch.mem_access_emulate_each_rep = 0; + memset(&d->arch.monitor, 0, sizeof(d->arch.monitor)); } void vm_event_toggle_singlestep(struct domain *d, struct vcpu *v)